package com.mlf.prototype.demo;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;

@Data
public class Orders implements Cloneable {


    private Long id;
    private List<String> items;


    // 其他属性
    // 浅克隆方法
    public Orders shallowClone() {
        try {
            return (Orders) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new RuntimeException(e);
        }
    }

    // 深克隆方法
    @Override
    public Orders clone() {
        try {
            Orders clone = (Orders) super.clone(); // 浅拷贝
            // 深拷贝items列表

            clone.items = this.items != null ? new ArrayList<>(this.items) : new ArrayList<>();
            return clone;
        } catch (CloneNotSupportedException e) {
            throw new RuntimeException(e);
        }
    }


    // 复制订单的方法 - 问题所在
    // 每次都重新构造对象，且需要手动复制所有字段
    public static void creatSimpleOrders() {
        Orders orders = new Orders();
        List<String> list = getOrderItems();
        orders.setItems(list);
        //其他属性 ....
    }

    // 模拟 数据
    private static List<String> getOrderItems() {
        List<String> list = new ArrayList<>();
        list.add("上衣");
        list.add("裤子");
        list.add("鞋子");
        list.add("帽子");
        return list;
    }

}
